package com.example.dangdangbackend.service.impl;

import com.example.dangdangbackend.DTO.CheckItemDTO;
import com.example.dangdangbackend.DTO.SetItemOrderIdDTO;
import com.example.dangdangbackend.DTO.UpdateBookDTO;
import com.example.dangdangbackend.DTO.UpdateItemDTO;
import com.example.dangdangbackend.VO.BookCartVO;
import com.example.dangdangbackend.common.BaseContext;
import com.example.dangdangbackend.common.CustomException;
import com.example.dangdangbackend.entity.Item;
import com.example.dangdangbackend.mapper.BookMapper;
import com.example.dangdangbackend.mapper.ItemMapper;
import com.example.dangdangbackend.service.ItemService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.List;

/**
 * @author LENOVO
 */
@Service
public class ItemServiceImpl implements ItemService {

    @Autowired
    private ItemMapper itemMapper;

    private BookMapper bookMapper;

    DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
    @Override
    public void insertIntoItem(Item item) {
        String currentTimeString = LocalDateTime.now().format(formatter);
        LocalDateTime time = LocalDateTime.parse(currentTimeString, formatter);
        item.setCreateTime(time);

        item.setCount(1);

        itemMapper.insertIntoItem(item);
    }


    @Override
    public boolean checkItem(int bookId) {
        int userId = BaseContext.getCurrentId();
        CheckItemDTO checkItemDTO = new CheckItemDTO();
        checkItemDTO.setBookId(bookId);
        checkItemDTO.setUserId(userId);

        int i = itemMapper.ifBookExist(checkItemDTO);
        return i > 0;
    }

    @Override
    public void addItem(int itemId,int bookId) {
        int userId = BaseContext.getCurrentId();
        UpdateItemDTO updateItemDTO = new UpdateItemDTO();
        updateItemDTO.setItemId(itemId);
        updateItemDTO.setUserId(userId);
        int i = itemMapper.selectRemainStocks(bookId);
        System.out.println("商品id为-----------"+bookId);
        if(i<=0){
            throw new CustomException("商品库存不够了！！！");
        }
        itemMapper.addItem(updateItemDTO);
    }

    @Override
    public void subItem(int itemId) {
        int userId = BaseContext.getCurrentId();
        UpdateItemDTO updateItemDTO = new UpdateItemDTO();
        updateItemDTO.setItemId(itemId);
        updateItemDTO.setUserId(userId);

        itemMapper.subItem(updateItemDTO);
    }

    @Override
    public List<BookCartVO> getItemDetail(int userId) {
        return itemMapper.selectBookDetail(userId);
    }

    /**
     * 删除购物车中的物品
     * @param itemId
     */
    @Override
    public void deleteItem(int itemId) {
        int userId = BaseContext.getCurrentId();
        UpdateItemDTO updateItemDTO = new UpdateItemDTO();
        updateItemDTO.setItemId(itemId);
        updateItemDTO.setUserId(userId);

        itemMapper.deleteItem(updateItemDTO);
    }

    @Override
    public void setItemOrder(int orderId) {
        SetItemOrderIdDTO setItemOrderId = new SetItemOrderIdDTO();
        setItemOrderId.setOrderId(orderId);
        int id = BaseContext.getCurrentId();
        setItemOrderId.setUserId(id);

        itemMapper.setItemOrderId(setItemOrderId);
    }


}
